Some mobile applications ask the user to upload data or use features such as the camera as part of the interaction with the application. However, mobile web browsers have limited capabilities and do not provide functionalities of many personal computer-based web browsers. When applications are implemented in a mobile web application, either the implementation is limited as compared to a personal-computer based web application, or the user is asked to exit or minimize the web application to access device functionalities such as the camera or file system and return when completed.
One solution is to create a downloadable application, such as a Java 2, Micro Edition (J2ME) application to provide access to the mobile device functionalities. The J2ME platform is a set of standard Java application program interfaces (APIs), and provides, e.g., a user interface, a robust security model, built-in network protocols, and support for networked and disconnected applications. J2ME applications may be downloaded dynamically and, through provided APIs, utilize the native capabilities of the mobile device. The standard set of J2ME APIs may be extended using optional packages for each specific mobile device, such that manufacturers may leverage the features of each mobile device.
However, the wireless carriers require that software loaded on mobile device be certified through an extensive process. In addition, there are multi-platform support issues with downloadable web applications because of the many different types of mobile devices. These problems are made even more complex because certification and support issues are repeated each time a new version of the software is released.